// use reqwest::{Client, Method};
// use serde::Serialize;
// use std::collections::HashMap;

// #[derive(Debug, Serialize)]
// struct Request {
//     protocol: String,
//     url: String,
//     method: String,
//     body: Option<String>,
//     cookies: Option<HashMap<String, String>>,
//     ssl_cert: Option<String>,
//     retry: bool,
//     json: Option<serde_json::Value>,
//     form: Option<HashMap<String, String>>,
// }

// impl Request {
//     fn new(
//         protocol: &str,
//         url: &str,
//         method: &str,
//     ) -> Self {
//         Request {
//             protocol: protocol.to_string(),
//             url: url.to_string(),
//             method: method.to_string(),
//             body: None,
//             cookies: None,
//             ssl_cert: None,
//             retry: false,
//             json: None,
//             form: None,
//         }
//     }

//     async fn send(&self) -> Result<String, reqwest::Error> {
//         let client = Client::builder()
//             .danger_accept_invalid_certs(self.ssl_cert.is_some())
//             .build()?;
        
//         let mut request_builder = client
//             .request(Method::from_bytes(self.method.as_bytes()).unwrap(), &self.url);

//         if let Some(ref body) = self.body {
//             request_builder = request_builder.body(body.clone());
//         }

//         if let Some(ref json) = self.json {
//             request_builder = request_builder.json(json);
//         }

//         if let Some(ref form) = self.form {
//             request_builder = request_builder.form(form);
//         }

//         if let Some(ref cookies) = self.cookies {
//             for (k, v) in cookies {
//                 request_builder = request_builder.header("Cookie", format!("{}={}", k, v));
//             }
//         }

//         let response = request_builder.send().await?;

//         Ok(response.text().await?)
//     }
// }

// #[tokio::main]
// async fn main() {
//     let protocol = "HTTP/1.1";
//     let url = "http://localhost:8080";  // https://httpbin.org/get
//     let method = "GET";

//     let request = Request::new(protocol, url, method);

//     match request.send().await {
//         Ok(response) => println!("Response: {}", response),
//         Err(err) => eprintln!("Error: {:?}", err),
//     }

// }